import Vue from 'vue'
import Vuex from 'vuex'
import getters from './getters'
// import VuexPersistence from 'vuex-persist' // 持久化

Vue.use(Vuex)
// // 遍历modules文件夹的所有文件
// // 接收三个参数("文件路径", 是否遍历子模块, 匹配js文件)
// const modulesFiles = require.context('./modules', /\.js$/)
const modulesFiles = require.context('./modules', true, /\.js$/)

const modules = modulesFiles.keys().reduce((modules, modulePath) => {
  // 对得到的数据进行遍历处理
  // ./user.js ===> user
  // \w 匹配字母或数字或下划线或汉字
  // . 匹配除换行符以外的任意字符
  const moduleName = modulePath.replace(/^\.\/(.*)\.\w+$/, '$1')
  const value = modulesFiles(modulePath)
  modules[moduleName] = value.default
  return modules
}, {})

// // 创建-vuex持久化 防止刷新-数据清空
// const vuexLocal = new VuexPersistence({
//   key: 'store', storage: window.sessionStorage
// })

const store = new Vuex.Store({
  modules, // 分模块
  getters
  // plugins: [vuexLocal.plugin] // 状态持久化
})

export default store
